package ${basePackage}.generator;

import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;

/**
 * <p>Title: </p>
 * <p>Description: </p>
 *
 * @author su.gd
 * @date 2023-11-12
 */
public class DynamicGenerator {

    /**
     * 动态文件生成
     * @param inputPath  模板文件位置
     * @param outputPath  输出文件位置
     * @param model 待替换内容
     * @throws IOException
     * @throws TemplateException
     */
    public static void doGenerate(String inputPath, String outputPath, Object model) throws IOException, TemplateException {
        // new 出 Configuration 对象，参数为 FreeMarker 版本号
        Configuration configuration = new Configuration(Configuration.VERSION_2_3_32);

        //指定模板文件所在的路径
        File templateDir = new File(inputPath).getParentFile();
        configuration.setDirectoryForTemplateLoading(templateDir);

        //设置模板文件使用的字符集
        configuration.setDefaultEncoding("utf-8");

        // （根据模板路径）创建模板对象，加载指定模板
        String templateName = new File(inputPath).getName();
        Template template = configuration.getTemplate(templateName);

        // 指定生成文件的路径【输出路径中必须包含，待写入的文件】
        FileWriter out = new FileWriter(outputPath);

        // 处理（数据模型）并生成文件
        template.process(model, out);

        // 关闭输出流
        out.close();
    }
}
